iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 17
1
Modern Web

Laravel 6.0 初體驗!怎麼用最新的 laravel 架網站!系列 第 17

[Day 17] 開始貼文囉!談操作 Model 的 resource 功能

  • 分享至 

  • xImage
  •  

用戶系統做好了,資料庫結構也處理好了,現在我們可以開始做表單,讓用戶可以貼文章囉!

我們先來製作針對 Post 的表單。

Post 的操作

大家還記得針對資料庫的五種操作嗎?

如果忘記了,趕快回去看看[Day 11] 物件該怎麼使用!聊 Model 的 BREAD

要一次建立所有針對 Post 物件的 BREAD 操作,雖然不覺得很難,但是份量有一點多。

幸好!Laravel 在這裏有簡單的指令可以產生!

我們輸入

$ php artisan make:controller PostController --resource --model=Post
Controller created successfully.

然後看看產生的 PostController 長得怎樣

<?php

namespace App\Http\Controllers;

use App\Post;
use Illuminate\Http\Request;

class PostController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }
......

裡面已經幫我們建立好架構啦!太方便了

然後,我們在 routes/web.php 裡面宣告

Route::resource('posts', 'PostController');

這樣宣告,等同一次宣告了七個個別的路徑!

為什麼是七個呢?我們來看看分別是哪七個

動作 網址 對應函式名稱 route 名稱
GET /posts index posts.index
GET /posts/create create posts.create
POST /posts store posts.store
GET /posts/{post} show posts.show
GET /posts/{post}/edit edit posts.edit
PUT/PATCH /posts/{post} update posts.update
DELETE /posts/{post} destroy posts.destroy

其中比較難理解的,應該是 storeupdate 兩個函式。不過沒關係,我們繼續往下,自然就會知道這兩個函式的妙用。

列表所有文章

首先,我們先測試一下路徑是否正確連接。

我們把 PostController 裡面的 index 改寫一下

public function index()
{
    return view('posts.index');
}

接著,我們加入 resources/views/posts/index.blade.php,內容為

列舉所有文章

然後連線到 http://127.0.0.1/posts/ ,成功的話,就可以看到「列舉所有文章」囉!

用我們之前學到畫面的方式,改寫一下 index 傳入所有文章

public function index()
{
    return view('posts.index', ['posts' => Post::cursor()]);
}

接著,我們改寫一下 index.blade.php 來顯示所有文章

列舉所有文章
<hr />
@foreach($posts as $post)
    {{ $post->content }}
    <hr />
@endforeach

成功的話,畫面應該會看到大量的文章內容,我們這一階段就成功囉!


總結一下今天的所學

今天我們學到怎麼利用 Laravel 的 resource 指令,快速的建立操作的 controller,以及怎麼建立對應的 route

希望今天大家覺得滿意!我們明天見!


上一篇
[Day 16] 網站要有會員了!用 Laravel 實作用戶登入
下一篇
[Day 18] 繼續談 resource,建立表單來新增文章
系列文
Laravel 6.0 初體驗!怎麼用最新的 laravel 架網站!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言